SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TDCANJ_PROV_Q01]    
/*----------------------------------------------------------------*/    
/*-- Empresa  : OFISIS S.A.      */    
/*-- Cliente  : CASSINELLI      */    
/*-- Sistema  : Tesoreria      */    
/*-- Programa  : Reporte Seguimiento Documentos    */    
/*-- Script  : TDCANJ_PROV_Q01       */    
/*-- Nombre  : SP_TDCANJ_PROV_Q01         */    
/*-- Desarrollado : JFA          */    
/*-- Fecha  : 06/08/1998       */    
/*-- Base de Datos : MS SQL Server      */    
/*-- Versi½n  : 7.0       */    
/*----------------------------------------------------------------*/    
    
/*----------------------------------------------------------------*/    
/*-- Modificado por  : Merardo Antonio Rojas Mendoza   */    
/*-- Fecha modificaci½n  : 25/08/1998       */    
/*-- Detalle modificaci½n: Estandarizaci½n     */    
/*----------------------------------------------------------------*/    
/*----------------------------------------------------------------*/    
/*-- Modificado por  : Pedro Barco Lezama	       */    
/*-- Fecha modificaci½n  : 17/07/2010       */    
/*-- Detalle modificaci½n:  Se cambio de la tabla temporal #TWCANJ_PROV el campo 
	NU_DOCU_PROV(15) a (20)        */    
/*----------------------------------------------------------------*/    
/*----------------------------------------------------------------*/    
/* drop proc SP_TDCANJ_PROV_Q01        */    
/* grant all on SP_TDCANJ_PROV_Q01 to public     */    
/* SP_TDCANJ_PROV_Q01 '10', '00000001', '00000001'      */    
/*----------------------------------------------------------------*/    
    
( @ISCO_EMPR TD_VC_002,    
  @ISCO_PROV TD_VC_020,    
  @ISNU_CANJ TD_VC_008    
)    
 As    
Declare    
 @VSTI_DOCU        TD_VC_003,    
 @VSNU_DOCU_PROV   TD_VC_020,    
 @VSNU_LETR_PROV   TD_VC_020,     
 @VINU_SECU        TD_IN_001,    
 @OSTI_DOCU    TD_VC_003    
    
  Create Table #TWCANJ_PROV    
  ( NU_TRAN        Varchar(9) NULL,     
    NU_SECU        smallint  NULL,      
    TI_DOCU        VarChar(3)   NULL,    
    NU_DOCU_PROV   VarChar(20)  NULL,--Cambio     
    TI_DOCU_LETR   VarChar(3)   NULL,    
    NU_LETR_PROV   VarChar(20)  NULL)     
  
    
Select @VINU_SECU = 0    
EXEC SP_TTDOCU_CNTB_Q02 6,@OSTI_DOCU      
-- El CU_TDCANJ_PROV_Q01_1 posee un documento con su n-mero    
Declare CU_TDCANJ_PROV_Q01_1 cursor    
For    
Select CO_TIPO_DOCU, NU_DOCU_PROV    
From TDCANJ_PROV    
Where CO_EMPR = @ISCO_EMPR and CO_PROV = @ISCO_PROV and NU_CANJ = @ISNU_CANJ    
and CO_TIPO_DOCU IS NOT NULL     
    
Open CU_TDCANJ_PROV_Q01_1    
Fetch CU_TDCANJ_PROV_Q01_1 into @VSTI_DOCU, @VSNU_DOCU_PROV    
While @@fetch_status = 0    
  Begin    
    If @@fetch_status != 0    
       Begin    
         Raiserror 20001 'Fin de archivo'    
         Close CU_TDCANJ_PROV_Q01_1    
         Deallocate CU_TDCANJ_PROV_Q01_1    
         Return     
       end     
    
    Select @VINU_SECU = @VINU_SECU + 1    
    
    Insert into #TWCANJ_PROV (NU_TRAN, NU_SECU, TI_DOCU, NU_DOCU_PROV)        
    Values ('C'+@ISNU_CANJ, @VINU_SECU, @VSTI_DOCU, @VSNU_DOCU_PROV)    
    
    Fetch CU_TDCANJ_PROV_Q01_1 into @VSTI_DOCU, @VSNU_DOCU_PROV    
  End    
    
Close CU_TDCANJ_PROV_Q01_1    
Deallocate CU_TDCANJ_PROV_Q01_1    
    
Select @VINU_SECU = 0    
    
-- cursor obtiene todas las letras del documento por proveedor    
Declare CU_TDCANJ_PROV_Q01_1 cursor    
For    
Select 'LET', T1.NU_LETR_PROV    
From TDCANJ_PROV T1, TMLETR_PROV T2    
Where T1.CO_EMPR = @ISCO_EMPR and    
T1.CO_EMPR = T2.CO_EMPR and    
T1.CO_PROV = @ISCO_PROV and    
T1.CO_PROV = T2.CO_PROV  and    
T1.NU_LETR_PROV = T2.NU_LETR_PROV  and    
T1.NU_CANJ = @ISNU_CANJ AND    
T1.NU_LETR_PROV is not null    
    
Open CU_TDCANJ_PROV_Q01_1    
Fetch CU_TDCANJ_PROV_Q01_1 into @VSTI_DOCU, @VSNU_LETR_PROV    
While @@fetch_status = 0    
  Begin    
    If @@fetch_status != 0    
       Begin    
         Raiserror 20001 'Fin de archivo'    
         Close CU_TDCANJ_PROV_Q01_1    
         Deallocate CU_TDCANJ_PROV_Q01_1    
         Return     
       end     
    
    Select @VINU_SECU = @VINU_SECU + 1    
    
    If NOT Exists ( Select * From #TWCANJ_PROV Where NU_SECU = @VINU_SECU)    
  
       Insert into #TWCANJ_PROV (NU_TRAN, NU_SECU, TI_DOCU_LETR, NU_LETR_PROV)        
       Values ('C'+@ISNU_CANJ, @VINU_SECU, @VSTI_DOCU, @VSNU_LETR_PROV)    
    Else    
       Update #TWCANJ_PROV Set TI_DOCU_LETR = @VSTI_DOCU, NU_LETR_PROV = @VSNU_LETR_PROV    
       Where NU_SECU = @VINU_SECU      
    
    Fetch CU_TDCANJ_PROV_Q01_1 into @VSTI_DOCU, @VSNU_LETR_PROV    
  End    
    
close CU_TDCANJ_PROV_Q01_1    
deallocate CU_TDCANJ_PROV_Q01_1    
    
Select NU_TRAN, TI_DOCU, NU_DOCU_PROV, TI_DOCU_LETR, NU_LETR_PROV from #TWCANJ_PROV    
Return    
    
/*------------------------------ FIN ---------------------------------*/  

GO
